#include "word.h"

void Big_Draw(int x0,int y0,int *buf,int w,int h,int color)  //汉字
{
    int index,i;
    for(index = 0;index<32;index++)
    {
        //解析word[index]的8个bit
        for(i=7;i>=0;i--)
        {
            if((buf[index] & 1<<i) != 0)
            {
            //word[index]的第i个bit是1
                
                for(int j2=1;j2<=w;j2++)                             //宽放大w倍
                {
                    if(index%2)                             //index由于1/2=1导致y多1，本来0和1应该在一行
                    {
                        LCD_Draw_Point(x0 + w*8*(index%2) + w*(7-i)+j2,y0+h*(index-1)/2,color);     
                        for(int z2=1;z2<=h;z2++)                        //高放大h倍
                        LCD_Draw_Point(x0 + w*8*(index%2) + w*(7-i)+j2,y0+h*(index-1)/2+z2,color);
                    }
                    else
                    {
                        LCD_Draw_Point(x0 + w*8*(index%2) + w*(7-i)+j2,y0+h*index/2,color);
                        for(int z2=1;z2<=h;z2++)
                        LCD_Draw_Point(x0 + w*8*(index%2) + w*(7-i)+j2,y0+h*index/2+z2,color);
                    }
                }
                    
            }
        }
    }
}

void Min_Draw(int x0,int y0,int *buf,int w,int h,int color)  //数字
{
    int index,i;
    for(index = 0;index<16;index++)
    {
        //解析word[index]的8个bit
        for(i=7;i>=0;i--)
        {
            if((buf[index] & 1<<i) != 0)
            {
                for(int j2=1;j2<=w;j2++)                             //宽放大w倍
                {
                    LCD_Draw_Point(x0  + w*(7-i)+j2,y0+h*index,color);
                    for(int z2=1;z2<=h;z2++)
                        LCD_Draw_Point(x0  + w*(7-i)+j2,y0+h*index+z2,color);
                }
            }
        }
    }
}

void Math_L(int x0,int y0,int m,int w,int h,int color)                              //左边扩展
{
    int a,b=0;
    if (m==0)
    Min_Draw(x0-w*8*b,y0,math[0],w,h,color);
    while(m)
    {
        a=m%10;
        Min_Draw(x0-w*8*b,y0,math[a],w,h,color);
        m=m/10;
        b++;
    }
}

void Math_R(int x0,int y0,int m,int w,int h,int color)                        //向右边扩展
{
    int a,b=0;
    char t[10];
    if (m==0)
        Min_Draw(x0+w*8*b,y0,math[0],w,h,color);
    while(m)
    {
        a=m%10;
        t[b++]=a;
        m=m/10;
    }
    for(int i=b-1;i>=0;i--)
    {
        Min_Draw(x0+w*8*(b-1-i),y0,math[t[i]],w,h,color);
    }
}

void  lowercase(int x0,int y0,char *buf,int w,int h,int color)
{
    int xx=0;
    for(int i=0;buf[i]!='\0';i++)
    {
        Min_Draw(x0+xx,y0,English[buf[i]-'a'],w,h,color);
        xx+=w*8;
    }
}